package com.keensense.vcm.model;

import java.util.List;
import javax.xml.bind.annotation.*;

/**
 * @author lanjian
 * @date 2020/5/21 5:19 下午
 */
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class QueryProfileByPictureRequest {
    /**
     * 创建开始的时间戳
     */
    private Long startTime;
    /**
     * 创建结束的时间戳
     */
    private Long endTime;

    /**
     * 图片列表， 仅支持传一张图片 具体参数类型参见pictures
     */
    @XmlElementWrapper(name = "pictures")
    @XmlElement(name = "picture")
    private List<Picture> pictures;

    /**
     * 相似度阈值，范围60~100，图片检索时必须指定,默认60， 可配置文件配置
     */
    private Integer similarityThreshold;

    /**
     * 分页信息
     */
    private PageModel page;

    /**
     * 图片检索时决定是否过滤红名单，该字段只针对有红名单权限的用户有效，无红名单权限的用户默认过滤红名单。取值：true或false， 默认为false
     */
    private boolean filterOptions;

    /**
     * 指定检索时间段列表（目前只支持一个period）
     */
    @XmlElementWrapper(name = "periods")
    @XmlElement(name = "period")
    private List<Period> periods;

    /**
     * 摄像机编号列表或互联编码列表（不能混合输入）
     */
    @XmlElementWrapper(name = "cameraSns")
    @XmlElement(name = "cameraSn")
    private List<String> cameraSns;

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public List<Picture> getPictures() {
        return pictures;
    }

    public void setPictures(List<Picture> pictures) {
        this.pictures = pictures;
    }

    public Integer getSimilarityThreshold() {
        return similarityThreshold;
    }

    public void setSimilarityThreshold(Integer similarityThreshold) {
        this.similarityThreshold = similarityThreshold;
    }

    public PageModel getPage() {
        return page;
    }

    public void setPage(PageModel page) {
        this.page = page;
    }

    public boolean isFilterOptions() {
        return filterOptions;
    }

    public void setFilterOptions(boolean filterOptions) {
        this.filterOptions = filterOptions;
    }

    public List<Period> getPeriods() {
        return periods;
    }

    public void setPeriods(List<Period> periods) {
        this.periods = periods;
    }

    public List<String> getCameraSns() {
        return cameraSns;
    }

    public void setCameraSns(List<String> cameraSns) {
        this.cameraSns = cameraSns;
    }
}
